import { checkUserNameExistApi } from '@/api/userApi'

// 添加用户时表单验证
export const addUserRulesMixin = {
  data() {
    return {
      errorFields: [],
      rules: {
        realname: [{ required: true, whitespace: true, message: '姓名不能为空', trigger: 'blur' }],
        username: [
          { required: true, whitespace: true, message: '账号不能为空', trigger: 'blur' },
          // 如果有异步请求，则触发的时机一定要为 blur,提升性能
          { validator: this.validatorUsername, trigger: 'blur' }
        ],
        password: this.validatorPassword(),  //执行方法
        phone: [{ validator: this.validatorPhone, trigger: 'blur' }]
      }
    }
  },
  watch: {
    'userFormData.realname'(value) {
      if (value) {
        this.errorFields.splice(this.errorFields.indexOf('realname'), 1)
      }
    }
  },
  methods: {
    //如果ispass为真，返回验证方式
    validatorPassword() {
      if (this.ispass) {
        return [{ required: true, whitespace: true, message: '密码不能为空', trigger: 'blur' }]
      }
      return []    //否则返回空数组
    },
    validatorPhone(rulue, value, callback) {
      if (value) {
        if (/^1[3-9]\d{9}$/.test(value)) {
          callback()
        } else {
          callback(new Error('手机号码不合法'))
        }
      } else {
        callback()
      }
    },
    // 账号唯一性验证
    validatorUsername(rule, value, callback) {
      // 得到当前的账号信息，去请求后端接口，根据它的返回值来判断是否重复
      // 返回值有效值为数字 0不存在，1存在
      if (!this.userid || this.userid === 0) {
        checkUserNameExistApi(value)
          .then(ret => {
            if (ret.data === 0) {
              callback()
            } else {
              callback(new Error('此账号已存在'))
            }
          })
          .catch(() => {
            callback(new Error('网络异常'))
          })
      } else {
        callback()
      }
    }
  }
}
